﻿using FunArts.EasyDevOps.Shared.Models.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace FunArts.EasyDevOps.Shared.Models.SshClient.Command
{
    public class CheckAndFixBashrcCommand : ILinuxCommand
    {
        public string BuildCommand(SystemVersionTypeEnum systemVersionType)
        {
            string bashScript = @"
# 检查是否为root用户
if [ $(id -u) -eq 0 ]; then
    BASHRC_FILE=/root/.bashrc
else
    BASHRC_FILE=~/.bashrc
fi

# 检查是否已存在加载代码
if ! grep -qF '/etc/profile.d/*' ""$BASHRC_FILE""; then
    # 使用临时文件安全修改
    TEMP_FILE=$(mktemp)
    
    # 添加头部注释和加载逻辑
    echo '# 强制加载/etc/profile.d环境变量
if [ -d /etc/profile.d ]; then
    for script in /etc/profile.d/*.sh; do
        [ -r ""$script"" ] && . ""$script""
    done
fi

' > ""$TEMP_FILE""

    # 保留原文件内容（排除可能重复的加载代码）
    grep -v '/etc/profile.d' ""$BASHRC_FILE"" >> ""$TEMP_FILE""

    # 替换原文件（保留权限）
    cat ""$TEMP_FILE"" > ""$BASHRC_FILE""
    rm -f ""$TEMP_FILE""
    
    echo ""false""
else
    echo ""true""
fi";

            return bashScript.Replace("\r\n", "\n").Trim();
        }
    }
}
